package com.shuyangyang.structure;

/**
 * 自己实现线性表接口
 *
 * @author shuyangyang
 * @version 1.0.0
 * @date 2020-3-28 13:09:38
 */
public interface MyList<T> {

    /**
     * 数组里的元素个数
     *
     * @return {@code int} 元素数量
     */
    int size();

    /**
     * 是否为空数组
     *
     * @return {@code true 空 false 非空}
     */
    boolean isEmpty();

    /**
     * 往数组结尾添加一个元素
     *
     * @param element 元素
     */
    void add(T element);

    /**
     * 往数组指定位置添加元素
     *
     * @param index   数组下标
     * @param element 元素
     */
    void add(int index, T element);

    /**
     * 获取数组指定下标的元素
     *
     * @param index 数组下标
     * @return 元素
     */
    T get(int index);

    /**
     * 移除数组指定位置元素
     *
     * @param index 数组下标
     */
    void remove(int index);

    /**
     * 数组字符串输出
     *
     * @return 数组字符串
     */
    String listToString();
}
